package File_demo;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Objects;

/**
 * @author Summerday
 */
public class FileTest {

    public static void main(String[] args) throws IOException {

        ////在当前目录下创建tempxxx.txt临时文件
        File file = new File("newFile");
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getPath());

        file.mkdir();

        File tempFile = File.createTempFile("temp", ".txt", file);
        //jvm退出时删除该文件
        tempFile.deleteOnExit();

        File ff = new File(".");
        System.out.println("当前路径下所有文件和路径");
        Arrays.stream(Objects.requireNonNull(ff.list()))
                .forEach(System.out::println);

        System.out.println("系统所有的根路径");
        File[] files = File.listRoots();
        for (File f : files) {
            System.out.println(f);
        }


        //打印该目录下的java文件
        File path = new File("Demo-io/src/main/java/File_demo");
        File[] list;
        //通过匿名内部类返回FilenameFilter的引用
        list = path.listFiles((dir, name) -> name.endsWith(".java"));
        for (File l : list)
            System.out.println(l.getName());

    }
    /**
     * 静态方法，删除完整的目录
     * @param file 传入File对象
     */
    public static void deleteDirectory(File file){
        //判断file对象是文件还是目录
        if(file.isDirectory()){
            //如果是目录，获取子文件和子目录列表
            File[] fs = file.listFiles();
            //遍历数组
            for(File f :fs){
                //递归删除
                deleteDirectory(f);
            }
        }
        //最后的无论是啥，都需要删除
        file.delete();
    }

}
